package org.nacos.config.controller;

import org.nacos.config.config.NacosConfigProperties;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {

    @Value("${useLocalCache:false}")
    private boolean useLocalCache;
    
    /**
     * @RequiredArgsConstructor:
     * 1. 必须声明的变量为final
     * 2. 根据构造器注入的，在类上使用代替了Autowrited注解
     */
    
    private final Environment env;
    
    private final NacosConfigProperties nacosConfigProperties;

    /**
     * 动态配置方式:
     * 1. 实时获取参数: 在类中注入 Spring 环境（Environment）
     * 2. @Value 动态刷新: 在刷新的 Bean 类上加上 @RefreshScope 原生注解
     * 3. @ConfigurationProperties 动态刷新
     */
    
    /**
     * http://localhost:8070/config/get
     * dataId完整格式: ${prefix}-${spring.profiles.active}.${file-extension}
     * tenant: 空间ID，不传按照默认空间
     */
    @RequestMapping("/get")
    public String get() {
    	StringBuffer res = new StringBuffer();
    	res.append("useLocalCache:").append(useLocalCache).append("\r\n");
    	res.append("name:").append(env.getProperty("name")).append("\r\n");
    	res.append("age:").append(nacosConfigProperties.getAge()).append("\r\n");
    	res.append("desc:").append(nacosConfigProperties.getDesc()).append("\r\n");
    	res.append("share:").append(env.getProperty("share")).append("\r\n");
        return res.toString();
    }
}